/**
  ************************************* Copyright ******************************
  * FileName   : io_ctrl.c
  * Version    : v1.0
  * Author     : yychao
  * Date       : 2023-08-07
  * Description:
  * Function List:
  	1. ....
  	   <version>:
  <modify staff>:
  		  <data>:
   <description>:
  	2. ...
  ******************************************************************************
 */
#include "io_ctrl.h"
#include "gpio.h"
#include "log.h"
#include "screen.h"
#include "soft_timer.h"
#include "lfs_port.h"
#include "my_protocol.h"
#include "adc_app.h"
void (*coil_ctrl[])(uint8_t sta)={
	beep_ctrl,
	fan1_ctrl,
	fan2_ctrl,
	fan3_ctrl,
	red1_ctrl,
	red3_ctrl,
	blue1_ctrl,
	blue3_ctrl,
	yellow1_ctrl,
	yellow2_ctrl,
};

void ctrl_manage(void)
{
	/*
	BEEP,
	FAN1,
	FAN2,
	FAN3,
	RED1,
	RED3,
	BLUE1,
	BLUE3,
	YELLOW1,
	YELLOW2,
	*/
	for(uint8_t i = 0; i < 10; i++) {
		if(pro_data_tem_st.coil[i] != pro_data_st.coil[i]) {
			if(pro_data_st.coil[i] == 0x55) {
				coil_ctrl[i](0x55);
			}else {
				coil_ctrl[i](0x00);
			}
			pro_data_tem_st.coil[i] = pro_data_st.coil[i];
		}
	}
	/*temperature
	fan1
	fan2
	fan3
	*/
	pro_data_st.input[0] = 0;
	pro_data_st.input[1] = adc_value_st.adc1_ch03_PA6;
	pro_data_st.input[2] = adc_value_st.adc3_ch12_PB0;
	pro_data_st.input[3] = adc_value_st.adc4_ch03_PB12;
	
//	for(uint8_t i = 0; i < 4; i++) {
//		LOG_DEBUG("FAN Sample[%d]: %d\r\n", i, pro_data_st.input[i]);
//	}
}

void io_ctrl_init(void)
{
	/*BEEP*/
	gpio_init_out(GPIOA, GPIO_PIN_12);
    gpio_off(GPIOA, GPIO_PIN_12);
	
	/*FAN 1 2 3*/
	gpio_init_out(GPIOA, GPIO_PIN_7);
    gpio_off(GPIOA, GPIO_PIN_7);
	gpio_init_out(GPIOB, GPIO_PIN_1);
    gpio_off(GPIOB, GPIO_PIN_1);
	gpio_init_out(GPIOB, GPIO_PIN_13);
    gpio_off(GPIOB, GPIO_PIN_13);
	
	/*LED R1 R3*/
	gpio_init_out(GPIOB, GPIO_PIN_14);
    gpio_off(GPIOB, GPIO_PIN_14);
	gpio_init_out(GPIOA, GPIO_PIN_10);
    gpio_off(GPIOA, GPIO_PIN_10);

	/*LED B1 B3*/
	gpio_init_out(GPIOB, GPIO_PIN_15);
    gpio_off(GPIOB, GPIO_PIN_15);
	gpio_init_out(GPIOA, GPIO_PIN_11);
    gpio_off(GPIOA, GPIO_PIN_11);

	/*LED Y1 Y2*/
	gpio_init_out(GPIOA, GPIO_PIN_8);
    gpio_off(GPIOA, GPIO_PIN_8);
	gpio_init_out(GPIOA, GPIO_PIN_9);
    gpio_off(GPIOA, GPIO_PIN_9);	
	
	
#if 0	
    /*output push leaf ctrl io_1*/
    gpio_init_out(GPIOA, GPIO_PIN_12);
    gpio_off(GPIOA, GPIO_PIN_12);
    /*output push leaf ctrl io_2*/
    gpio_init_out(GPIOA, GPIO_PIN_11);
    gpio_off(GPIOA, GPIO_PIN_11);

    /*output camera power*/
    gpio_init_out(GPIOA, GPIO_PIN_8);
    gpio_off(GPIOA, GPIO_PIN_8);

    /*output camera lamp*/
    gpio_init_out(GPIOC, GPIO_PIN_9);
    gpio_off(GPIOC, GPIO_PIN_9);

    /*output bk1*/
    gpio_init_out(GPIOC, GPIO_PIN_8);
    gpio_off(GPIOC, GPIO_PIN_8);

    /*output PUSH_ROD_VCC*/
    gpio_init_out(GPIOC, GPIO_PIN_7);
    gpio_off(GPIOC, GPIO_PIN_7);
    /*output PUSH_ROD TURN Forward/Backward*/
    gpio_init_out(GPIOC, GPIO_PIN_6);
    gpio_off(GPIOC, GPIO_PIN_6);

    /*input bk1*/
    gpio_init_in(GPIOD, GPIO_PIN_15);
    /*input bk2*/
    gpio_init_in(GPIOD, GPIO_PIN_14);


    /*input I_AIR_DOOR_ON*/
    gpio_init_in(GPIOD, GPIO_PIN_13);
    /*input I_AIR_DOOR_OFF*/
    gpio_init_in(GPIOD, GPIO_PIN_12);

    /*output AIR_DOOR ctrl io_1*/
    gpio_init_out(GPIOD, GPIO_PIN_8);
    gpio_off(GPIOD, GPIO_PIN_8);
    /*output AIR_DOOR ctrl io_2*/
    gpio_init_out(GPIOB, GPIO_PIN_15);
    gpio_off(GPIOB, GPIO_PIN_15);


    /*output CYCLE_FAN CTRL*/
    gpio_init_out(GPIOB, GPIO_PIN_14);
    gpio_off(GPIOB, GPIO_PIN_14);
    /*output CYCLE_FAN High/Low Speed*/
    gpio_init_out(GPIOB, GPIO_PIN_13);
    gpio_off(GPIOB, GPIO_PIN_13);

    /*output FEED_MOTOR CTRL*/
    gpio_init_out(GPIOB, GPIO_PIN_12);
    gpio_off(GPIOB, GPIO_PIN_12);

    /*output BURNER_ROD CTRL*/
    gpio_init_out(GPIOE, GPIO_PIN_14);
    gpio_off(GPIOE, GPIO_PIN_14);

    /*output BURNER_FAN CTRL*/
    gpio_init_out(GPIOE, GPIO_PIN_13);
    gpio_off(GPIOE, GPIO_PIN_13);


    /*output CLEAR_MOTOR CTRL*/
    gpio_init_out(GPIOE, GPIO_PIN_12);
    gpio_off(GPIOE, GPIO_PIN_12);
    /*output CLEAR_MOTOR Forward/Backward*/
    gpio_init_out(GPIOE, GPIO_PIN_11);
    gpio_off(GPIOE, GPIO_PIN_11);
#endif
}

void beep_ctrl(uint8_t sta) {
	if(sta == 0x55) {
		LOG_ERROR("beep_ctrl on\r\n");
		gpio_on(GPIOA, GPIO_PIN_12);
	}else {
		LOG_ERROR("beep_ctrl off\r\n");
		gpio_off(GPIOA, GPIO_PIN_12);
	}
}
void fan1_ctrl(uint8_t sta) {
	if(sta == 0x55) {
		LOG_ERROR("fan1_ctrl on\r\n");
		gpio_on(GPIOA, GPIO_PIN_7);
	}else {
		LOG_ERROR("fan1_ctrl off\r\n");
		gpio_off(GPIOA, GPIO_PIN_7);
	}
}
void fan2_ctrl(uint8_t sta) {
	if(sta == 0x55) {
		LOG_ERROR("fan2_ctrl on\r\n");
		gpio_on(GPIOB, GPIO_PIN_1);
	}else {
		LOG_ERROR("fan2_ctrl off\r\n");
		gpio_off(GPIOB, GPIO_PIN_1);
	}
}
void fan3_ctrl(uint8_t sta) {
	if(sta == 0x55) {
		LOG_ERROR("fan3_ctrl on\r\n");
		gpio_on(GPIOB, GPIO_PIN_13);
	}else {
		LOG_ERROR("fan3_ctrl off\r\n");
		gpio_off(GPIOB, GPIO_PIN_13);
	}	
}
void red1_ctrl(uint8_t sta) {
	if(sta == 0x55) {
		LOG_ERROR("red1_ctrl on\r\n");
		gpio_on(GPIOB, GPIO_PIN_14);
	}else {
		LOG_ERROR("red1_ctrl off\r\n");
		gpio_off(GPIOB, GPIO_PIN_14);
	}	
}
void red3_ctrl(uint8_t sta) {
	if(sta == 0x55) {
		LOG_ERROR("red3_ctrl on\r\n");
		gpio_on(GPIOA, GPIO_PIN_10);
	}else {
		LOG_ERROR("red3_ctrl off\r\n");
		gpio_off(GPIOA, GPIO_PIN_10);
	}	
}
void blue1_ctrl(uint8_t sta) {
	if(sta == 0x55) {
		gpio_on(GPIOB, GPIO_PIN_15);
	}else {
		LOG_ERROR("blue1_ctrl off\r\n");
		gpio_off(GPIOB, GPIO_PIN_15);
	}	
}
void blue3_ctrl(uint8_t sta) {
	if(sta == 0x55) {
		LOG_ERROR("blue3_ctrl on\r\n");
		gpio_on(GPIOA, GPIO_PIN_11);
	}else {
		LOG_ERROR("blue3_ctrl off\r\n");
		gpio_off(GPIOA, GPIO_PIN_11);
	}		
}
void yellow1_ctrl(uint8_t sta) {
	if(sta == 0x55) {
		LOG_ERROR("yellow1_ctrl on\r\n");
		gpio_on(GPIOA, GPIO_PIN_8);
	}else {
		LOG_ERROR("yellow1_ctrl off\r\n");
		gpio_off(GPIOA, GPIO_PIN_8);
	}
}
void yellow2_ctrl(uint8_t sta) {
	if(sta == 0x55) {
		LOG_ERROR("yellow2_ctrl on\r\n");
		gpio_on(GPIOA, GPIO_PIN_9);
	}else {
		LOG_ERROR("yellow2_ctrl off\r\n");
		gpio_off(GPIOA, GPIO_PIN_9);
	}	
}


